package com.boarsoft.boar.app.action;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.boarsoft.bean.ReplyInfo;
import com.boarsoft.boar.app.AppFileBiz;
import com.boarsoft.boar.entity.AppFile;
import com.boarsoft.boar.entity.FileInfo;
import com.boarsoft.boar.file.FileBiz;
import com.boarsoft.common.Authorized;

@RestController
@RequestMapping("/app/inst/file")
public class AppInstFileAction {
	@Autowired
	private AppFileBiz appFileBiz;
	@Autowired
	private FileBiz fileBiz;

	/**
	 * 将多个文件与一个应用绑定，表示此应用会用到这些文件
	 * 
	 * @param appId
	 * @param fileIds
	 * @return
	 */
	@RequestMapping("/add.do")
	@Authorized(code = "app.file.add")
	public ReplyInfo<Object> bind(String appId, String fileIds) {
		appFileBiz.add(appId, fileIds);
		return ReplyInfo.SUCCESS;
	}

	@RequestMapping("/delete.do")
	@Authorized(code = "app.file.delete")
	public ReplyInfo<Object> delete(String id) {
		AppFile af = appFileBiz.delete(id);
		FileInfo f = fileBiz.get(af.getFileId());
		// 如果文件专属于此应用，则删除文件信息
		if (f.getAppId().equals(af.getAppId())) {
			// TODO 先删除文件
			// 再删除文件信息
			fileBiz.delete(f.getId());
		}
		return ReplyInfo.SUCCESS;
	}

	// /**
	// * 根据fileId查询返回fileId【已关联的】所有AppInfo的集合 表app_inf和表app_file的关联查询
	// */
	// @RequestMapping("/listAppsByFileId")
	// @Authorized(code = "appFile.listAppsByFileId")
	// public void listAppsByFileId() {
	// if (Util.strIsEmpty(fileId)) {
	// return new ReplyInfo<String>(Constants.ERROR_INVALID,"Msg.common.param");
	// return;
	// }
	// PagedResult<AppInfo> pr = appFileBiz.listAppsByFileId(fileId, key,
	// orderBy,
	// pageNo, pageSize);
	// return new ReplyInfo<String>(true, JsonUtil.from(pr,
	// "svcs,libs,insts,files"));
	// }
	//
	// /**
	// * 根据fileId查询返回fileId【未关联的】所有AppInfo的集合 表app_inf和表app_file的关联查询
	// */
	// @RequestMapping("/listAppsWhereFileIdNotAttached")
	// @Authorized(code = "appFile.listAppsWhereFileIdNotAttached")
	// public void listAppsWhereFileIdNotAttached() {
	// if (Util.strIsEmpty(fileId)) {
	// return new ReplyInfo<String>(Constants.ERROR_INVALID,"Msg.common.param");
	// return;
	// }
	// PagedResult<AppInfo> pr =
	// appFileBiz.listAppsWhereFileIdNotAttached(fileId, key,
	// orderBy, pageNo, pageSize);
	// return new ReplyInfo<String>(true, JsonUtil.from(pr,
	// "svcs,libs,insts,files"));
	// }

	// /**
	// * 根据appId查询返回AppId【未关联的】所有File_Info的集合 表file_info和表app_file的关联查询
	// */
	// @RequestMapping("/listFilesWhereAppIdNotAttached")
	// @Authorized(code = "appFile.listFilesWhereAppIdNotAttached")
	// public void listFilesWhereAppIdNotAttached() {
	// if (Util.strIsEmpty(appId)) {
	// return new ReplyInfo<String>(Constants.ERROR_INVALID,"Msg.common.param");
	// return;
	// }
	// PagedResult<FileInfo> pr =
	// appFileBiz.listFilesWhereAppIdNotAttached(appId, key,
	// orderBy, pageNo, pageSize);
	// return new ReplyInfo<String>(true, JsonUtil.from(pr, "apps"));
	// }

	// /**
	// * 通过appId删除关联关系
	// */
	// @RequestMapping("/deleteByAppId")
	// @Authorized(code = "appFile.deleteByAppId")
	// public void deleteByAppId() {
	// if (Util.strIsEmpty(appId)) {
	// return new ReplyInfo<String>(Constants.ERROR_INVALID,"Msg.common.param");
	// return;
	// }
	// log.warn("Delete file of app {}", appId);
	// appFileBiz.deleteByAppId(appId);
	// return ReplyInfo.SUCCESS;
	// }
	//
	// /**
	// * 通过fileId删除关联关系
	// */
	// @RequestMapping("/deleteByFileId")
	// @Authorized(code = "appFile.deleteByFileId")
	// public void deleteByFileId() {
	// if (Util.strIsEmpty(fileId)) {
	// return new ReplyInfo<String>(Constants.ERROR_INVALID,"Msg.common.param");
	// return;
	// }
	// log.warn("Delete file {}", fileId);
	// appFileBiz.deleteByFileId(fileId);
	// return ReplyInfo.SUCCESS;
	// }
}